using System;
using System.Collections.Generic;

using Atomic.Structures;

namespace Atomic.Clusters
{
	public interface IClusterFunctionEvaluator
	{
		/// <summary>
		/// Evaluates the cluster functions of the specified clusters given a structure.
		/// </summary>
		IClusterFunctionValue Evaluate(Structure structure, IEnumerable<ClusterClass> clusters);

		/// <summary>
		/// Simultaneously evaluates the cluster functions of the specified clusters given a group of structures. Provided for potential efficiency.
		/// </summary>
		IEnumerable<IClusterFunctionValue> Evaluate(IEnumerable<Structure> structures, IEnumerable<ClusterClass> clusters);
	}
}
